<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <div id="app">
    <a href="#/home">首页</a>
    <a href="#/about">关于</a>

    <div class="router-view"></div>
  </div>

  <script>
    // Vue-Router有两种模式: hash 模式和 history模式。默认的路由模式是hash模式。
    //1.hash模式是开发中默认的模式，它的URL带着一个#，例如:http://www.abc.com/#/vue，它的hash值就是#/vue 。特点：hash值会出现在URL里面，但是不会出现在HTTP请求中，对后端完全没有影响。所以改变hash值，不会重新加载页面。换句话说就是刷新页面不会丢失 。原理是使用onhashchange事件监听，在页面的hash值发生变化时，获取history历史对象hash值，然后根据hash值来渲染对应的组件。

    //一.hash模式的原理
    // 获取router-view的DOM
    const routerViewEl = document.getElementsByClassName("router-view")[0];

    // 监听URL的改变
    window.addEventListener("hashchange", () => {
      console.log('js历史对象', location);  //有多种属性，其中hash是我们需要的
      switch (location.hash) {
        case "#/home":
          routerViewEl.innerHTML = "首页";
          break;
        case "#/about":
          routerViewEl.innerHTML = "关于";
          break;
        default:
          routerViewEl.innerHTML = "";
      }
    })
  </script>
</body>

</html>